package cn.itsource.pethome.result;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * @desc 统一返回结果集
 * @author
 * @date
 */
@Data
@ApiModel(description = "后台接口同一返回对象")
public class JSONResult {

    //接口状态（true：成功；false：失败）
    @ApiModelProperty(value = "接口状态（true：成功；false：失败）")
    private Boolean success = true;
    @ApiModelProperty(value = "成功统一返回0000，其余编码全部是错误码）")
    //成功统一返回0000，其余编码全部是错误码
    private String code = "0000";
    @ApiModelProperty(value = "返回前端的提示信息（成功）")
    //返回前端的提示信息（成功）
    private String message = "成功";
    @ApiModelProperty(value = "没有指定错误码时，统一返回这个错误码")
    //没有指定错误码时，统一返回这个错误码
    private static String errorCode = "9999";
    @ApiModelProperty(value = "返回前端的提示信息（失败）")
    //返回前端的提示信息（失败）
    private static String errorMessage = "失败";
    @ApiModelProperty(value = "存储返回给前端的数据")
    //存储返回给前端的数据
    private Object data;
    @ApiModelProperty(value = "创建当前实例（成功）")
    //创建当前实例（成功）
    public static JSONResult success(){
        return new JSONResult();
    }
    @ApiModelProperty(value = "创建当前实例（成功），并设置数据返回")
    //创建当前实例（成功），并设置数据返回
    public static JSONResult success(Object obj){
        JSONResult instance = new JSONResult();
        instance.setData(obj);
        return instance;
    }
    @ApiModelProperty(value = "创建当前实例（成功），并设置数据和状态码返回")
    //创建当前实例（成功），并设置数据和状态码返回
    public static JSONResult success(Object obj, String code){
        JSONResult instance = new JSONResult();
        instance.setCode(code);
        instance.setData(obj);
        return instance;
    }
    @ApiModelProperty(value = "创建当前实例（失败）")
    //创建当前实例（失败）
    public static JSONResult error(){
        JSONResult instance = new JSONResult();
        instance.setCode(errorCode);
        instance.setSuccess(false);
        instance.setMessage(errorMessage);
        return instance;
    }
    @ApiModelProperty(value = "创建当前实例（失败）")
    //创建当前实例（失败）
    public static JSONResult error(String code, String message){
        JSONResult instance = new JSONResult();
        instance.setCode(code);
        instance.setSuccess(false);
        instance.setMessage(message);
        return instance;
    }
    @ApiModelProperty(value = "创建当前实例（失败），并返回指定错误信息")
    //创建当前实例（失败），并返回指定错误信息
    public static JSONResult error(String message){
        JSONResult instance = new JSONResult();
        instance.setCode(errorCode);
        instance.setSuccess(false);
        instance.setMessage(message);
        return instance;
    }
    @ApiModelProperty(value = "创建当前实例（失败），并返回指定错误信息和数据")
    //创建当前实例（失败），并返回指定错误信息和数据
    public static JSONResult error(String message, Object obj){
        JSONResult instance = new JSONResult();
        instance.setCode(errorCode);
        instance.setSuccess(false);
        instance.setMessage(message);
        instance.setData(obj);
        return instance;
    }
}